Right now I'm at one of those interesting times where I am creating a piece of software without knowing what I'm making until it's done. The code base is haphazardly organized at best--originally starting off as a single HTML file with JS objects and then branching out into a collection of JS files roughly split up by class (helpers go with their main module even if shared by multiple, etc). This time produces some of the worst code I ever write. There are shining examples of ingenuity strewn throughout, but no coherent strategy or consistency whatsoever.
Some variables are camel case, some are underscored. Some strings use single quotes, while others are double. Global variables are used. Mutators are not used. There is no glossary of terms (sometimes it's a buddy, sometimes it's a contact). It's the kind of stuff that could ruin a reputation if it fell into the wrong hands. But it works, and it's evolving. And if it's a good idea that's worth running with, it will be rewritten to be beautiful. If not, the small patches of beauty and perfection will be tossed into a junk heap of old projects that will never be salvaged or even salvageable if I were to try. After a couple weeks of not working on the project, it will be forever lost.
Now is the perfect time to capture "requirements" and design the architecture because an intimate knowledge of the new tools is fresh in my mind. But I'm too busy working hard and evolving the idea.
But there is a mindset associated with this level of dedication to a project, being 'in the zone' for 12+ hours a day. It makes me better at everything. It makes me more confident. It makes me seriously think about quitting my job with no business plan and no idea where I will get my next paycheck. It makes me write in a style I don't usually write in, for better or worse. I'm writing this article like I've been writing my code, full of good, solid ideas but absolutely lacking cohesion. Most importantly, it makes me behave with a drunken sense of enlightenment :)